package com.yby6.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yby6.common.core.AjaxResult;
import com.yby6.common.core.domain.SysMenu;
import com.yby6.common.core.domain.SysUser;
import com.yby6.system.vo.MenuTreeVo;
import com.yby6.system.vo.RouterVo;

import java.util.List;

/**
 * Description: 杨不易网站 :www.yangbuyi.top
 * date: 2021/5/21
 *
 * @author Yang Shuai
 * @since JDK 1.8
 **/

public interface SysMenuService extends IService<SysMenu> {
    /**
     * 添加菜单
     *
     * @param sysMenu
     * @return
     */
    AjaxResult addMenu(SysMenu sysMenu);

    /**
     * 修改菜单
     *
     * @param sysMenu
     * @return
     */
    AjaxResult updateMenu(SysMenu sysMenu);

    /**
     * 校验是否存在子菜单
     *
     * @param menuId 菜单ID
     * @return 结果 true 存在 false 不存在
     */
    boolean hasChildByMenuId(Long menuId);

    /**
     * 校验菜单是否分配
     *
     * @param menuId 菜单id
     * @return 结果 true 存在 false 不存在
     */
    boolean checkMenuExistRole(Long menuId);

    /**
     * 删除菜单
     *
     * @param menuId 菜单ID
     * @return 结果 ture 成功 false 失败
     */
    int deleteMenuById(Long menuId);

    /**
     * 分页获取菜单列表
     *
     * @param sysMenu
     * @param currentUser
     * @return
     */
    List<SysMenu> selectMenuList(SysMenu sysMenu, SysUser currentUser);

    /**
     * 根据ID查询菜单信息
     *
     * @param menuId
     * @return
     */
    SysMenu selectMenuById(Long menuId);

    /**
     * 构造下拉树形菜单
     *
     * @param sysMenu
     * @param currentUser
     * @return
     */
    List<MenuTreeVo> getTreeList(SysMenu sysMenu, SysUser currentUser);


    /**
     * 根据当前登陆用户ID获取动态路由菜单
     *
     * @param loginUser
     * @return 动态路由
     */
    List<RouterVo> getRouters(SysUser loginUser);

    /**
     * 根据用户ID查询拥有的权限标识
     *
     * @param userId
     * @return
     */
    List<String> selectMenuPermsByUserId(Long userId);
}
